<?php
/**
 * Modelo CRUD de galeria
 * @author Emanuel Melo @ PC4 Team
 */
class PC4_Crud_Galeria extends PC4_Crud_Tabela1 {

	public function __construct($tabela = 'galerias', $tabelaN = 'fotos', $total = '', $fk = '', $campoId = 'id', $ondeTabelaN = array(), $validacoes = array()) {
		parent::__construct($tabela, $tabelaN, $total, $fk, $campoId, array('ativo' => 1), $validacoes);

	}

	/**
	 * Faz a validação dos campos
	 * @param array(nome_campo,valor) $campos
	 * @param int $id
	 * @return array $erros para cada campo que não passou na validação
	 */
	function valida($campos, $id = 0) {
		$erros = array();
		if (empty($campos['id_eventos'])) {
			$erros[] = '&Eacute; necess&aacute;rio informar um evento';
		}
		if (trim($campos['nome']) == '') {
			$erros[] = '&Eacute; necess&aacute;rio informar o nome da galeria';
		}
		return $erros;
	}
	
	public function lista($pagina = 1, $limite = 30, $debug = false) {
		$this->db->select(
			'(SELECT f.arquivo FROM fotos f WHERE f.id_galerias = g.id LIMIT 1) AS img_principal,
			  e.titulo', false
		);
		
		$this->db->join('eventos e', 'e.id = ' .$this->letra . '.id_eventos', 'inner');
		
		return parent::lista($pagina, $limite, $debug);

	}

		
	/**
	 * Recebe um array com os campos e insere na base de dados o novo registro
	 * @param array $umRegistro
	 * @return int/array $id inserido ou (array)$erros com mensagens de erro
	 */
	function insere($umRegistro) {
		$umRegistro['slug'] = $this->slug($umRegistro['nome']);
		
		return parent::insere($umRegistro);
	}
	
	/**
	 * Edita um registro baseado no id
	 * @param array $umRegistro
	 * @param mixed $valor
	 * @param string $campo o nome alternativo para a chave primaria
	 * @param bool $debug
	 * @return array $erros para cada campo que não passou da validação 
	 */
	function edita($umRegistro, $valor, $campo = 'id', $debug = false) {
		$umRegistro['slug'] = $this->slug($umRegistro['nome'], $valor);
		
		return parent::edita($umRegistro, $valor, $campo, $debug);
	}
	
}
?>